home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / prgtools / programm.ing / m2gem106.lzh / CRYSTAL1.06 / SRC / CRYSTAL / WINDMGR.MOD < prev    next >
Encoding:
Modula Implementation  |  1992-11-22  |  3.7 KB  |  181 lines

  1. IMPLEMENTATION MODULE WindMgr;
  2.  
  3. (*
  4. AES Window Manager.
  5.  
  6. UK __DATE__ __TIME__
  7. *)
  8.  
  9. (*IMP_SWITCHES*)
  10.  
  11. FROM AES    IMPORT IntIn,IntOut,Global,crystal,Version,Integer;
  12. FROM RcMgr  IMPORT GRect,GPnt;
  13. FROM PORTAB IMPORT SIGNEDWORD,UNSIGNEDWORD;
  14. AES_SYSTEM_IMPORT
  15.  
  16. #if Seimet
  17. CONST F100 = 064050100H;
  18.       F101 = 065050100H;
  19.       F102 = 066010100H;
  20.       F103 = 067010100H;
  21.       F104 = 068020500H;
  22.       F105 = 069060100H;
  23.       F106 = 06A020100H;
  24.       F107 = 06B010100H;
  25.       F108 = 06C060500H;
  26.       F109 = 06D000000H;
  27.  
  28.       F119 = 077000100H;
  29. #endif
  30.  
  31. PROCEDURE WindCreate(    Kind   : WindowElement;
  32.                      VAR MaxRect: GRect): SIGNEDWORD;
  33. BEGIN
  34.   WITH IntIn DO
  35.     Array[0]:= CAST(Integer,Kind);
  36.     WITH MaxRect DO
  37.       Array[1]:= GX;
  38.       Array[2]:= GY;
  39.       Array[3]:= GW;
  40.       Array[4]:= GH;
  41.     END;
  42.   END;
  43.   crystal(100,5,1,0);
  44.   RETURN IntOut[0];
  45. END WindCreate;
  46.  
  47. PROCEDURE WindOpen(    Handle   : SIGNEDWORD;
  48.                    VAR StartRect: GRect);
  49. BEGIN
  50.   WITH IntIn DO
  51.     Array[0]:= Handle;
  52.     WITH StartRect DO
  53.       Array[1]:= GX;
  54.       Array[2]:= GY;
  55.       Array[3]:= GW;
  56.       Array[4]:= GH;
  57.     END;
  58.   END;
  59.   crystal(101,5,1,0);
  60. END WindOpen;
  61.  
  62. PROCEDURE WindClose(Handle: SIGNEDWORD);
  63. BEGIN
  64.   IntIn.Array[0]:= Handle;
  65.   crystal(102,1,1,0);
  66. END WindClose;
  67.  
  68. PROCEDURE WindDelete(VAR Handle: SIGNEDWORD);
  69. BEGIN
  70.   IntIn.Array[0]:= Handle;
  71.   crystal(103,1,1,0);
  72.   Handle:= NoWindow;
  73. END WindDelete;
  74.  
  75. PROCEDURE WindGet(    Handle: SIGNEDWORD;
  76.                       Field : WindowFunctions;
  77.                   VAR Word1 : SIGNEDWORD;
  78.                   VAR Word2 : SIGNEDWORD;
  79.                   VAR Word3 : SIGNEDWORD;
  80.                   VAR Word4 : SIGNEDWORD);
  81. BEGIN
  82.   WITH IntIn DO
  83.     Array[0]:= Handle;
  84.     Array[1]:= ORD(Field);
  85.     Array[2]:= Word1;
  86.   END;
  87.   crystal(104,2,5,0);
  88.   Word1:= IntOut[1];
  89.   Word2:= IntOut[2];
  90.   Word3:= IntOut[3];
  91.   Word4:= IntOut[4];
  92. END WindGet;
  93.  
  94. PROCEDURE WindSet(Handle: SIGNEDWORD;
  95.                   Field : WindowFunctions;
  96.                   Word1 : SIGNEDWORD;
  97.                   Word2 : SIGNEDWORD;
  98.                   Word3 : SIGNEDWORD;
  99.                   Word4 : SIGNEDWORD);
  100. BEGIN
  101.   WITH IntIn DO
  102.     Array[0]:= Handle;
  103.     Array[1]:= ORD(Field);
  104.     Array[2]:= Word1;
  105.     Array[3]:= Word2;
  106.     Array[4]:= Word3;
  107.     Array[5]:= Word4;
  108.   END;
  109.   crystal(105,6,1,0);
  110. END WindSet;
  111.  
  112. PROCEDURE WindFind(XY: GPnt): SIGNEDWORD;
  113. BEGIN
  114.   WITH IntIn DO
  115.     WITH XY DO
  116.       Array[0]:= GX;
  117.       Array[1]:= GY;
  118.     END;
  119.   END;
  120.   crystal(106,2,1,0);
  121.   RETURN IntOut[0];
  122. END WindFind;
  123.  
  124. PROCEDURE WindUpdate(BegUp: UNSIGNEDWORD): BOOLEAN;
  125. BEGIN
  126.   IntIn.Array[0]:= BegUp;
  127.   crystal(107,1,1,0);
  128.   RETURN IntOut[0] # 0;
  129. END WindUpdate;
  130.  
  131. PROCEDURE WindCalc(    Type : CalcModes;
  132.                        Kind : WindowElement;
  133.                    VAR Rect1: GRect;
  134.                    VAR Rect2: GRect);
  135. BEGIN
  136.   WITH IntIn DO
  137.     Array[0]:= ORD(Type);
  138.     Array[1]:= CAST(Integer,Kind);
  139.     WITH Rect1 DO
  140.       Array[2]:= GX;
  141.       Array[3]:= GY;
  142.       Array[4]:= GW;
  143.       Array[5]:= GH;
  144.     END;
  145.   END;
  146.   crystal(108,6,5,0);
  147.   WITH Rect2 DO
  148.     GX:= IntOut[1];
  149.     GY:= IntOut[2];
  150.     GW:= IntOut[3];
  151.     GH:= IntOut[4];
  152.   END;
  153. END WindCalc;
  154.  
  155. PROCEDURE WindNew;
  156. BEGIN
  157. #if ST
  158.   IF (Version() > 0140H) AND (Version() # 0220H) THEN
  159.     crystal(109,0,1,0);
  160.   ELSE
  161.     IntOut[0]:= 0; (* error *)
  162.   END;
  163. #else
  164.   IntOut[0]:= 0; (* error *)
  165. #endif
  166. END WindNew;
  167.  
  168. PROCEDURE WindApFind(MXY: GPnt): SIGNEDWORD;
  169. BEGIN
  170. #if ST
  171.   IF Global.ApCount > 1 THEN
  172.     crystal(119,0,1,0);
  173.     RETURN IntOut[0];
  174.   END;
  175. #else
  176.   RETURN 0;
  177. #endif
  178. END WindApFind;
  179.  
  180. END WindMgr.
  181.